Introducción

Se realiza un análisis exploratorio de los tweets de los últimos 7 días por motivo de discriminación y un análisis de texto de los mismos.

Género

Mini EDA

  • Dimensión
[1] 1230   18
  • Dentro del motivo de discriminacios género se cuentan con 10 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Orientación/Identidad sexual

Mini EDA

  • Dimensión
[1] 761  18
  • Dentro del motivo de discriminacios Orientación/Identidad sexual se cuentan con 8 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Ideoligía política

Mini EDA

  • Dimensión
[1] 931  18
  • Dentro del motivo de discriminacios Ideoligía política se cuentan con 3 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Apariencia

Mini EDA

  • Dimensión
[1] 1659   18
  • Dentro del motivo de discriminacios apariencia se cuentan con 10 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Religión

Mini EDA

  • Dimensión
[1] 57 18
  • Dentro del motivo de discriminacios religion se cuentan con 4 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Edad

Mini EDA

  • Dimensión
[1] 675  18
  • Dentro del motivo de discriminacios edad se cuentan con 6 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Discapacidad

Mini EDA

  • Dimensión
[1] 742  18
  • Dentro del motivo de discriminacios discapacidad se cuentan con 3 adjetivos.

TF_IDF

  • TF_IDF con dos palabras

  • TF_IDF con tres palabras

Correlación de palabras

Completas

Salud

LS0tCnRpdGxlOiAiQ09QUkVEIHR3aXR0ZXIgZHVtbXkiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojbGlicmFyeSh4bHN4KQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShtYWdyaXR0cikKbGlicmFyeSh0aWR5dGV4dCkKbGlicmFyeSh0bSkKbGlicmFyeShzdHJpbmdpKQpsaWJyYXJ5KHJlc2hhcGUyKQpsaWJyYXJ5KHdvcmRjbG91ZCkKbGlicmFyeSh0b3BpY21vZGVscykKbGlicmFyeSh3aWR5cikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGZvcmNhdHMpCmxpYnJhcnkocGxvdGx5KQpsaWJyYXJ5KGFydWxlc1ZpeikKbGlicmFyeShhcnVsZXMpCmxpYnJhcnkoZ2dyYXBoKQpsaWJyYXJ5KGlncmFwaCkKYGBgCgojIyBJbnRyb2R1Y2Npw7NuIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQoKU2UgcmVhbGl6YSB1biBhbsOhbGlzaXMgZXhwbG9yYXRvcmlvIGRlIGxvcyB0d2VldHMgZGUgbG9zIMO6bHRpbW9zIDcgZMOtYXMgcG9yIG1vdGl2byBkZSBkaXNjcmltaW5hY2nDs24geSB1biBhbsOhbGlzaXMgZGUgdGV4dG8gZGUgbG9zIG1pc21vcy4KCiMjIyBHw6luZXJvCgojIyMjIE1pbmkgRURBIAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfZ2VuZXJvX3JhdyA8LSByZWFkX3JkcygiLi4vZGF0YS90d2VldHMvYmFzZV9nZW5lcm8uUkRTIikKYmFzZV9nZW5lcm8gPC0gYmFzZV9nZW5lcm9fcmF3ICU+JSAKICBmaWx0ZXIoIXN0cl9kZXRlY3QodGV4dCwgIl5SVCIpKSAKYGBgCgotIERpbWVuc2nDs24KCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpkaW0oYmFzZV9nZW5lcm8pCmBgYAoKLSBEZW50cm8gZGVsIG1vdGl2byBkZSBkaXNjcmltaW5hY2lvcyBnw6luZXJvIHNlIGN1ZW50YW4gY29uIDEwIGFkamV0aXZvcy4KCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQphZGogPC0gYmFzZV9nZW5lcm8gJT4lIAogIC4kdGlwbyAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIGxlbmd0aCgpCgpiYXNlX2dlbmVybyAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRhbGx5KCkgJT4lIAogIGFycmFuZ2UoZGVzYyhuKSkKYGBgCgojIyMjIFRGX0lERgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfcmVwb3J0ZXMgPC0gYmFzZV9nZW5lcm8gJT4lIAogIHNlbGVjdCh0ZXh0LCB0aXBvKQpgYGAKCi0gVEZfSURGIGNvbiBkb3MgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnN0b3Bfd29yZHMgPC0gZGF0YS5mcmFtZSh3b3JkID0gYyh0bTo6c3RvcHdvcmRzKGtpbmQgPSAiZXMiKSwgInhkIiwgInJpY2FyZG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuYXlhIiwgImh0dHBzIiwgInRvbW15YmFsbGVudCIsICJ0LmNvIikpICU+JSAKICBtdXRhdGUod29yZCA9IHN0cmlfdHJhbnNfZ2VuZXJhbCh3b3JkLCBpZCA9ICJMYXRpbi1BU0NJSSIpKQoKYmFzZV9uYXJfbW90aXZvXzIgPC0gYmFzZV9yZXBvcnRlcyAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHN1bW1hcmlzZSh0ZXh0byA9IHBhc3RlMCh0ZXh0LCBjb2xsYXBzZSA9ICIiKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgdW5uZXN0X3Rva2VucyhiaWdyYW0sIHRleHRvLCB0b2tlbiA9ICJuZ3JhbXMiLCBuID0gMikgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBzdHJpX3RyYW5zX2dlbmVyYWwoYmlncmFtLCBpZCA9ICJMYXRpbi1BU0NJSSIpKSAlPiUgCiAgY291bnQoYmlncmFtLCB0aXBvLCBzb3J0ID0gVFJVRSkgJT4lIAogIG5hLm9taXQoKSAlPiUgCiAgc2VwYXJhdGUoYmlncmFtLCBjKCJ3b3JkMSIsICJ3b3JkMiIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoIXdvcmQxICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDIgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICB1bml0ZShiaWdyYW0sIHdvcmQxLCB3b3JkMiwgc2VwID0gIiAiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiaWdyYW0gPC0gYmFzZV9uYXJfbW90aXZvXzIgJT4lIAogIGZpbHRlcih0aXBvICVpbiUgYygiY29tb19uaW5hIiwgImNvbW9faG9tYnJlIiwgImRpc2NyaW1pbmFjaW9uX211amVyZXMiLCJmZW1pbmF6aSIpKSAlPiUgIAogIGJpbmRfdGZfaWRmKGJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKGJpZ3JhbSA9IGZhY3RvcihiaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUoYmlncmFtKSkpKSAKCmJpZ3JhbSAlPiUgCiAgZmlsdGVyKHRpcG8gJWluJSBjKCJjb21vX25pbmEiLCAiY29tb19ob21icmUiLCAiZGlzY3JpbWluYWNpb25fbXVqZXJlcyIpKSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDcpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdncGxvdChhZXMoYmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBmYWNldF93cmFwKH50aXBvLCBuY29sID0gMSwgc2NhbGVzID0gImZyZWUiKSArCiAgY29vcmRfZmxpcCgpCgpiaWdyYW0gJT4lIAogIGZpbHRlcih0aXBvID09ICJmZW1pbmF6aSIpICU+JSAgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDEpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdncGxvdChhZXMoYmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9uYXJfbW90aXZvXzIgJT4lIAogIGZpbHRlcih0aXBvICVpbiUgYygiY29tb19uaW5hIiwgImNvbW9faG9tYnJlIiwgImRpc2NyaW1pbmFjaW9uX211amVyZXMiLCAiZmVtaW5hemkiKSkgJT4lIAogIGJpbmRfdGZfaWRmKGJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKGJpZ3JhbSA9IGZhY3RvcihiaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUoYmlncmFtKSkpKSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDcpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGFjYXN0KGJpZ3JhbSB+IHRpcG8sCiAgICAgICAgdmFsdWUudmFyID0gJ3RmX2lkZicsCiAgICAgICAgZmlsbCA9IDApICU+JSAKICBjb21wYXJpc29uLmNsb3VkKG1heC53b3JkcyA9IDEwMCwgc2NhbGUgPSBjKDEsIDAuMSksIHRpdGxlLnNpemUgPSAxKQpgYGAKCi0gVEZfSURGIGNvbiB0cmVzIHBhbGFicmFzCgpgYGB7ciwgZWNobyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX25hcl9tb3Rpdm9fMyA8LSBiYXNlX3JlcG9ydGVzICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgc3VtbWFyaXNlKHRleHRvID0gcGFzdGUwKHRleHQsIGNvbGxhcHNlID0gIiIpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICB1bm5lc3RfdG9rZW5zKHRyaWdyYW0sIHRleHRvLCB0b2tlbiA9ICJuZ3JhbXMiLCBuID0gMykgJT4lIAogIG11dGF0ZSh0cmlncmFtID0gc3RyaV90cmFuc19nZW5lcmFsKHRyaWdyYW0sIGlkID0gIkxhdGluLUFTQ0lJIikpICU+JSAKICBjb3VudCh0cmlncmFtLCB0aXBvLCBzb3J0ID0gVFJVRSkgJT4lIAogIG5hLm9taXQoKSAlPiUgCiAgc2VwYXJhdGUodHJpZ3JhbSwgYygid29yZDEiLCAid29yZDIiLCAid29yZDMiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKCF3b3JkMSAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQyICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDMgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICB1bml0ZSh0cmlncmFtLCB3b3JkMSwgd29yZDIsIHdvcmQzLCBzZXAgPSAiICIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnRyaWdyYW0gPC0gYmFzZV9uYXJfbW90aXZvXzMgJT4lIAogIGZpbHRlcih0aXBvICVpbiUgYygiY29tb19uaW5hIiwgImNvbW9faG9tYnJlIiwgImRpc2NyaW1pbmFjaW9uX211amVyZXMiLCJmZW1pbmF6aSIpKSAlPiUgIAogIGJpbmRfdGZfaWRmKHRyaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZSh0cmlncmFtID0gZmFjdG9yKHRyaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUodHJpZ3JhbSkpKSkgCgp0cmlncmFtICU+JSAKICBmaWx0ZXIodGlwbyAlaW4lIGMoImNvbW9fbmluYSIsICJjb21vX2hvbWJyZSIsICJkaXNjcmltaW5hY2lvbl9tdWplcmVzIikpICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oNCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyh0cmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBmYWNldF93cmFwKH50aXBvLCBuY29sID0gMSwgc2NhbGVzID0gImZyZWUiKSArCiAgY29vcmRfZmxpcCgpCgp0cmlncmFtICU+JSAKICBmaWx0ZXIodGlwbyA9PSAiZmVtaW5hemkiKSAlPiUgIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3BfbigxKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKHRyaWdyYW0sIHRmX2lkZiwgZmlsbCA9IHRpcG8pKSArCiAgZ2VvbV9jb2woc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSAidGYtaWRmIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCiMjIyMgQ29ycmVsYWNpw7NuIGRlIHBhbGFicmFzCgojIyMjIyBDb21wbGV0YXMKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX3JlcG9ydGVzICU+JSAKICBzZWxlY3QobW90aXZvID0gdGlwbywgdGV4dG8gPSB0ZXh0KSAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIG11dGF0ZShsaW5lYSA9IHJvd19udW1iZXIoKSwKICAgICAgICAgdGV4dG8gPSBhcy5jaGFyYWN0ZXIodGV4dG8pKSAlPiUgCiAgc2VsZWN0KC1tb3Rpdm8pICU+JSAKICB1bm5lc3RfdG9rZW5zKHdvcmQsIHRleHRvKSAlPiUgCiAgbXV0YXRlKHdvcmQgPSBzdHJpX3RyYW5zX2dlbmVyYWwod29yZCwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lCiAgZmlsdGVyKCF3b3JkICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgZ3JvdXBfYnkod29yZCkgJT4lIAogIGZpbHRlcihuKCkgPj0gMTApICU+JQogIHBhaXJ3aXNlX2Nvcih3b3JkLCBsaW5lYSwgc29ydCA9IFRSVUUpICU+JSAKICBmaWx0ZXIoY29ycmVsYXRpb24gPiAuNCkgJT4lIAogIGdyYXBoX2Zyb21fZGF0YV9mcmFtZSgpICU+JSAKICBnZ3JhcGgoKSArCiAgZ2VvbV9lZGdlX2xpbmsoYWVzKGVkZ2VfYWxwaGEgPSBjb3JyZWxhdGlvbiksIHNob3cubGVnZW5kID0gRkFMU0UpICsKICBnZW9tX25vZGVfcG9pbnQoY29sb3IgPSAiZ3JleSIsIHNpemUgPSAzKSArCiAgZ2VvbV9ub2RlX3RleHQoYWVzKGxhYmVsID0gbmFtZSksIHJlcGVsID0gVFJVRSkgKwogIHRoZW1lX3ZvaWQoKSAKYGBgCgojIyMgT3JpZW50YWNpw7NuL0lkZW50aWRhZCBzZXh1YWwKCiMjIyMgTWluaSBFREEgCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9vcmllbnRhY2lvbl9yYXcgPC0gcmVhZF9yZHMoIi4uL2RhdGEvdHdlZXRzL2Jhc2Vfb3JpZW50YWNpb24uUkRTIikKYmFzZV9vcmllbnRhY2lvbiA8LSBiYXNlX29yaWVudGFjaW9uX3JhdyAlPiUgCiAgZmlsdGVyKCFzdHJfZGV0ZWN0KHRleHQsICJeUlQiKSkgCmBgYAoKLSBEaW1lbnNpw7NuCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZGltKGJhc2Vfb3JpZW50YWNpb24pCmBgYAoKLSBEZW50cm8gZGVsIG1vdGl2byBkZSBkaXNjcmltaW5hY2lvcyBPcmllbnRhY2nDs24vSWRlbnRpZGFkIHNleHVhbCBzZSBjdWVudGFuIGNvbiA4IGFkamV0aXZvcy4KCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQphZGogPC0gYmFzZV9vcmllbnRhY2lvbiAlPiUgCiAgLiR0aXBvICU+JSAKICB1bmlxdWUoKSAlPiUgCiAgbGVuZ3RoKCkKCmJhc2Vfb3JpZW50YWNpb24gJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0YWxseSgpICU+JSAKICBhcnJhbmdlKGRlc2MobikpCmBgYAoKIyMjIyBURl9JREYKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX3JlcG9ydGVzIDwtIGJhc2Vfb3JpZW50YWNpb24gJT4lIAogIHNlbGVjdCh0ZXh0LCB0aXBvKQpgYGAKCi0gVEZfSURGIGNvbiBkb3MgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnN0b3Bfd29yZHMgPC0gZGF0YS5mcmFtZSh3b3JkID0gYyh0bTo6c3RvcHdvcmRzKGtpbmQgPSAiZXMiKSwgInhkIiwgImh0dHBzIiwgInQuY28iLCAiamF5IiwgInoiLCAiYWxlanFubCIsICJmcmVpdHFsIiwgImltZHJpdmVfIiwgInh4eG1vbnRhbmFfIiwgInVsdHJhZXZlbnRzbGEiLCAiYWxhbm9tYXJiYXJhamFzIiwgIm5vdHB1bGdhIiwgImltc3RyaWtleiIsICJsdW5hX3JpY2thcmRvIikpICU+JSAKICBtdXRhdGUod29yZCA9IHN0cmlfdHJhbnNfZ2VuZXJhbCh3b3JkLCBpZCA9ICJMYXRpbi1BU0NJSSIpKQoKYmFzZV9uYXJfbW90aXZvXzIgPC0gYmFzZV9yZXBvcnRlcyAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHN1bW1hcmlzZSh0ZXh0byA9IHBhc3RlMCh0ZXh0LCBjb2xsYXBzZSA9ICIiKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgdW5uZXN0X3Rva2VucyhiaWdyYW0sIHRleHRvLCB0b2tlbiA9ICJuZ3JhbXMiLCBuID0gMikgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBzdHJpX3RyYW5zX2dlbmVyYWwoYmlncmFtLCBpZCA9ICJMYXRpbi1BU0NJSSIpKSAlPiUgCiAgY291bnQoYmlncmFtLCB0aXBvLCBzb3J0ID0gVFJVRSkgJT4lIAogIG5hLm9taXQoKSAlPiUgCiAgc2VwYXJhdGUoYmlncmFtLCBjKCJ3b3JkMSIsICJ3b3JkMiIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoIXdvcmQxICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDIgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICB1bml0ZShiaWdyYW0sIHdvcmQxLCB3b3JkMiwgc2VwID0gIiAiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiaWdyYW0gPC0gYmFzZV9uYXJfbW90aXZvXzIgJT4lIAogIGZpbHRlcih0aXBvICVpbiUgCiAgICAgICAgICAgYygicGluY2hlX3B1dG8iLCAibGVzYmlhbmEiLCAiam90byIsICJwdW5pYWwiKSkgJT4lICAKICBiaW5kX3RmX2lkZihiaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBmYWN0b3IoYmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKGJpZ3JhbSkpKSkgCgpiaWdyYW0gJT4lIAogIGZpbHRlcih0aXBvICVpbiUgCiAgICAgICAgICAgYygicGluY2hlX3B1dG8iLCAiYXJyb3pfcG9wb3RlIiwgImxlc2JpYW5hIiwgImpvdG8iLCAicHVuaWFsIikpICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oNCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyhiaWdyYW0sIHRmX2lkZiwgZmlsbCA9IHRpcG8pKSArCiAgZ2VvbV9jb2woc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSAidGYtaWRmIikgKwogIGZhY2V0X3dyYXAofnRpcG8sIG5jb2wgPSAyLCBzY2FsZXMgPSAiZnJlZSIpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9uYXJfbW90aXZvXzIgJT4lIAogIGZpbHRlcih0aXBvICVpbiUgYygicGluY2hlX3B1dG8iLCAibGVzYmlhbmEiLCAiam90byIsICJwdW5pYWwiKSkgJT4lIAogIGJpbmRfdGZfaWRmKGJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKGJpZ3JhbSA9IGZhY3RvcihiaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUoYmlncmFtKSkpKSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDcpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGFjYXN0KGJpZ3JhbSB+IHRpcG8sCiAgICAgICAgdmFsdWUudmFyID0gJ3RmX2lkZicsCiAgICAgICAgZmlsbCA9IDApICU+JSAKICBjb21wYXJpc29uLmNsb3VkKG1heC53b3JkcyA9IDEwMCwgc2NhbGUgPSBjKDEsIDAuNiksIHRpdGxlLnNpemUgPSAxKQpgYGAKCi0gVEZfSURGIGNvbiB0cmVzIHBhbGFicmFzCgpgYGB7ciwgZWNobyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX25hcl9tb3Rpdm9fMyA8LSBiYXNlX3JlcG9ydGVzICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgc3VtbWFyaXNlKHRleHRvID0gcGFzdGUwKHRleHQsIGNvbGxhcHNlID0gIiIpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICB1bm5lc3RfdG9rZW5zKHRyaWdyYW0sIHRleHRvLCB0b2tlbiA9ICJuZ3JhbXMiLCBuID0gMykgJT4lIAogIG11dGF0ZSh0cmlncmFtID0gc3RyaV90cmFuc19nZW5lcmFsKHRyaWdyYW0sIGlkID0gIkxhdGluLUFTQ0lJIikpICU+JSAKICBjb3VudCh0cmlncmFtLCB0aXBvLCBzb3J0ID0gVFJVRSkgJT4lIAogIG5hLm9taXQoKSAlPiUgCiAgc2VwYXJhdGUodHJpZ3JhbSwgYygid29yZDEiLCAid29yZDIiLCAid29yZDMiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKCF3b3JkMSAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQyICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDMgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICB1bml0ZSh0cmlncmFtLCB3b3JkMSwgd29yZDIsIHdvcmQzLCBzZXAgPSAiICIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnRyaWdyYW0gPC0gYmFzZV9uYXJfbW90aXZvXzMgJT4lIAogIGZpbHRlcih0aXBvICVpbiUgYygicGluY2hlX3B1dG8iLCAibGVzYmlhbmEiLCAiam90byIsICJwdW5pYWwiKSkgJT4lICAKICBiaW5kX3RmX2lkZih0cmlncmFtLCB0aXBvLCBuKSAlPiUgCiAgYXJyYW5nZShkZXNjKHRmX2lkZikpICU+JSAKICBtdXRhdGUodHJpZ3JhbSA9IGZhY3Rvcih0cmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKHRyaWdyYW0pKSkpIAoKdHJpZ3JhbSAlPiUgCiAgZmlsdGVyKHRpcG8gJWluJSBjKCJwaW5jaGVfcHV0byIsICJsZXNiaWFuYSIsICJwdW5pYWwiKSkgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3Bfbig0KSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKHRyaWdyYW0sIHRmX2lkZiwgZmlsbCA9IHRpcG8pKSArCiAgZ2VvbV9jb2woc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSAidGYtaWRmIikgKwogIGZhY2V0X3dyYXAofnRpcG8sIG5jb2wgPSAyLCBzY2FsZXMgPSAiZnJlZSIpICsKICBjb29yZF9mbGlwKCkKCnRyaWdyYW0gJT4lIAogIGZpbHRlcih0aXBvID09ICJqb3RvIikgJT4lICAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oMSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyh0cmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBjb29yZF9mbGlwKCkKYGBgCgojIyMjIENvcnJlbGFjacOzbiBkZSBwYWxhYnJhcwoKIyMjIyMgQ29tcGxldGFzCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9yZXBvcnRlcyAlPiUgCiAgc2VsZWN0KG1vdGl2byA9IHRpcG8sIHRleHRvID0gdGV4dCkgJT4lIAogIHVuaXF1ZSgpICU+JSAKICBtdXRhdGUobGluZWEgPSByb3dfbnVtYmVyKCksCiAgICAgICAgIHRleHRvID0gYXMuY2hhcmFjdGVyKHRleHRvKSkgJT4lIAogIHNlbGVjdCgtbW90aXZvKSAlPiUgCiAgdW5uZXN0X3Rva2Vucyh3b3JkLCB0ZXh0bykgJT4lIAogIG11dGF0ZSh3b3JkID0gc3RyaV90cmFuc19nZW5lcmFsKHdvcmQsIGlkID0gIkxhdGluLUFTQ0lJIikpICU+JQogIGZpbHRlcighd29yZCAlaW4lIHN0b3Bfd29yZHMkd29yZCkgJT4lIAogIGdyb3VwX2J5KHdvcmQpICU+JSAKICBmaWx0ZXIobigpID49IDEwKSAlPiUKICBwYWlyd2lzZV9jb3Iod29yZCwgbGluZWEsIHNvcnQgPSBUUlVFKSAlPiUgCiAgZmlsdGVyKGNvcnJlbGF0aW9uID4gLjMpICU+JSAKICBncmFwaF9mcm9tX2RhdGFfZnJhbWUoKSAlPiUgCiAgZ2dyYXBoKCkgKwogIGdlb21fZWRnZV9saW5rKGFlcyhlZGdlX2FscGhhID0gY29ycmVsYXRpb24pLCBzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgZ2VvbV9ub2RlX3BvaW50KGNvbG9yID0gImdyZXkiLCBzaXplID0gMykgKwogIGdlb21fbm9kZV90ZXh0KGFlcyhsYWJlbCA9IG5hbWUpLCByZXBlbCA9IFRSVUUpICsKICB0aGVtZV92b2lkKCkgCmBgYAoKIyMjIElkZW9saWfDrWEgcG9sw610aWNhCgojIyMjIE1pbmkgRURBIAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfaWRlb2xvZ2lhX3JhdyA8LSByZWFkX3JkcygiLi4vZGF0YS90d2VldHMvYmFzZV9pZGVvbG9naWEuUkRTIikKYmFzZV9pZGVvbG9naWEgPC0gYmFzZV9pZGVvbG9naWFfcmF3ICU+JSAKICBmaWx0ZXIoIXN0cl9kZXRlY3QodGV4dCwgIl5SVCIpKSAKYGBgCgotIERpbWVuc2nDs24KCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpkaW0oYmFzZV9pZGVvbG9naWEpCmBgYAoKLSBEZW50cm8gZGVsIG1vdGl2byBkZSBkaXNjcmltaW5hY2lvcyBJZGVvbGlnw61hIHBvbMOtdGljYSBzZSBjdWVudGFuIGNvbiAzIGFkamV0aXZvcy4KCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQphZGogPC0gYmFzZV9pZGVvbG9naWEgJT4lIAogIC4kdGlwbyAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIGxlbmd0aCgpCgpiYXNlX2lkZW9sb2dpYSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRhbGx5KCkgJT4lIAogIGFycmFuZ2UoZGVzYyhuKSkKYGBgCgojIyMjIFRGX0lERgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfcmVwb3J0ZXMgPC0gYmFzZV9pZGVvbG9naWEgJT4lIAogIHNlbGVjdCh0ZXh0LCB0aXBvKQpgYGAKCi0gVEZfSURGIGNvbiBkb3MgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnN0b3Bfd29yZHMgPC0gZGF0YS5mcmFtZSh3b3JkID0gYyh0bTo6c3RvcHdvcmRzKGtpbmQgPSAiZXMiKSwgInhkIiwgImh0dHBzIiwgInQuY28iLCAiamEiLCAiZ2FyZGVuaW9qciIsICJuZWxsb2dvbWV6IiwiZ2hvc3RfY29va2llc18iLCAidG9tbXliYWxsZW50IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2Vvcm9yZWxsYW5vIiwgImx1aXNlbl9zYW56YXQiLCIgc2VyZ2lvYWd1YXlvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtemF2YWxhZ2MiLCAicmljYXJkb2FuYXlhYyIsICJyaWNoaWVnb2UiLCAieWFyZV9xdWlub25lcyIpKSAlPiUgCiAgbXV0YXRlKHdvcmQgPSBzdHJpX3RyYW5zX2dlbmVyYWwod29yZCwgaWQgPSAiTGF0aW4tQVNDSUkiKSkKCmJhc2VfbmFyX21vdGl2b18yIDwtIGJhc2VfcmVwb3J0ZXMgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICBzdW1tYXJpc2UodGV4dG8gPSBwYXN0ZTAodGV4dCwgY29sbGFwc2UgPSAiIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHVubmVzdF90b2tlbnMoYmlncmFtLCB0ZXh0bywgdG9rZW4gPSAibmdyYW1zIiwgbiA9IDIpICU+JSAKICBtdXRhdGUoYmlncmFtID0gc3RyaV90cmFuc19nZW5lcmFsKGJpZ3JhbSwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lIAogIGNvdW50KGJpZ3JhbSwgdGlwbywgc29ydCA9IFRSVUUpICU+JSAKICBuYS5vbWl0KCkgJT4lIAogIHNlcGFyYXRlKGJpZ3JhbSwgYygid29yZDEiLCAid29yZDIiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKCF3b3JkMSAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQyICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgdW5pdGUoYmlncmFtLCB3b3JkMSwgd29yZDIsIHNlcCA9ICIgIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmlncmFtIDwtIGJhc2VfbmFyX21vdGl2b18yICU+JSAKICBiaW5kX3RmX2lkZihiaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBmYWN0b3IoYmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKGJpZ3JhbSkpKSkgCgpiaWdyYW0gJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3Bfbig0KSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKGJpZ3JhbSwgdGZfaWRmLCBmaWxsID0gdGlwbykpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJ0Zi1pZGYiKSArCiAgZmFjZXRfd3JhcCh+dGlwbywgbmNvbCA9IDIsIHNjYWxlcyA9ICJmcmVlIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX25hcl9tb3Rpdm9fMiAlPiUgCiAgYmluZF90Zl9pZGYoYmlncmFtLCB0aXBvLCBuKSAlPiUgCiAgYXJyYW5nZShkZXNjKHRmX2lkZikpICU+JSAKICBtdXRhdGUoYmlncmFtID0gZmFjdG9yKGJpZ3JhbSwgbGV2ZWxzID0gcmV2KHVuaXF1ZShiaWdyYW0pKSkpICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oNykgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgYWNhc3QoYmlncmFtIH4gdGlwbywKICAgICAgICB2YWx1ZS52YXIgPSAndGZfaWRmJywKICAgICAgICBmaWxsID0gMCkgJT4lIAogIGNvbXBhcmlzb24uY2xvdWQobWF4LndvcmRzID0gMTAwLCBzY2FsZSA9IGMoMSwgMC40KSwgdGl0bGUuc2l6ZSA9IDEpCmBgYAoKLSBURl9JREYgY29uIHRyZXMgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfbmFyX21vdGl2b18zIDwtIGJhc2VfcmVwb3J0ZXMgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICBzdW1tYXJpc2UodGV4dG8gPSBwYXN0ZTAodGV4dCwgY29sbGFwc2UgPSAiIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHVubmVzdF90b2tlbnModHJpZ3JhbSwgdGV4dG8sIHRva2VuID0gIm5ncmFtcyIsIG4gPSAzKSAlPiUgCiAgbXV0YXRlKHRyaWdyYW0gPSBzdHJpX3RyYW5zX2dlbmVyYWwodHJpZ3JhbSwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lIAogIGNvdW50KHRyaWdyYW0sIHRpcG8sIHNvcnQgPSBUUlVFKSAlPiUgCiAgbmEub21pdCgpICU+JSAKICBzZXBhcmF0ZSh0cmlncmFtLCBjKCJ3b3JkMSIsICJ3b3JkMiIsICJ3b3JkMyIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoIXdvcmQxICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDIgJWluJSBzdG9wX3dvcmRzJHdvcmQsCiAgICAgICAgICF3b3JkMyAlaW4lIHN0b3Bfd29yZHMkd29yZCkgJT4lIAogIHVuaXRlKHRyaWdyYW0sIHdvcmQxLCB3b3JkMiwgd29yZDMsIHNlcCA9ICIgIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KdHJpZ3JhbSA8LSBiYXNlX25hcl9tb3Rpdm9fMyAlPiUgCiAgYmluZF90Zl9pZGYodHJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKHRyaWdyYW0gPSBmYWN0b3IodHJpZ3JhbSwgbGV2ZWxzID0gcmV2KHVuaXF1ZSh0cmlncmFtKSkpKSAKCnRyaWdyYW0gJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3BfbigyKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBmaWx0ZXIodGlwbyAhPSAiZmVtaW5hemkiKSAlPiUgCiAgZ2dwbG90KGFlcyh0cmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBmYWNldF93cmFwKH50aXBvLCBuY29sID0gMiwgc2NhbGVzID0gImZyZWUiKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKIyMjIyBDb3JyZWxhY2nDs24gZGUgcGFsYWJyYXMKCiMjIyMjIENvbXBsZXRhcwoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfcmVwb3J0ZXMgJT4lIAogIHNlbGVjdChtb3Rpdm8gPSB0aXBvLCB0ZXh0byA9IHRleHQpICU+JSAKICB1bmlxdWUoKSAlPiUgCiAgbXV0YXRlKGxpbmVhID0gcm93X251bWJlcigpLAogICAgICAgICB0ZXh0byA9IGFzLmNoYXJhY3Rlcih0ZXh0bykpICU+JSAKICBzZWxlY3QoLW1vdGl2bykgJT4lIAogIHVubmVzdF90b2tlbnMod29yZCwgdGV4dG8pICU+JSAKICBtdXRhdGUod29yZCA9IHN0cmlfdHJhbnNfZ2VuZXJhbCh3b3JkLCBpZCA9ICJMYXRpbi1BU0NJSSIpKSAlPiUKICBmaWx0ZXIoIXdvcmQgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICBncm91cF9ieSh3b3JkKSAlPiUgCiAgZmlsdGVyKG4oKSA+PSAxMCkgJT4lCiAgcGFpcndpc2VfY29yKHdvcmQsIGxpbmVhLCBzb3J0ID0gVFJVRSkgJT4lIAogIGZpbHRlcihjb3JyZWxhdGlvbiA+IC4zKSAlPiUgCiAgZ3JhcGhfZnJvbV9kYXRhX2ZyYW1lKCkgJT4lIAogIGdncmFwaCgpICsKICBnZW9tX2VkZ2VfbGluayhhZXMoZWRnZV9hbHBoYSA9IGNvcnJlbGF0aW9uKSwgc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGdlb21fbm9kZV9wb2ludChjb2xvciA9ICJncmV5Iiwgc2l6ZSA9IDMpICsKICBnZW9tX25vZGVfdGV4dChhZXMobGFiZWwgPSBuYW1lKSwgcmVwZWwgPSBUUlVFKSArCiAgdGhlbWVfdm9pZCgpIApgYGAKCiMjIyBBcGFyaWVuY2lhCgojIyMjIE1pbmkgRURBIAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfYXBhcmllbmNpYV9yYXcgPC0gcmVhZF9yZHMoIi4uL2RhdGEvdHdlZXRzL2Jhc2VfYXBhcmllbmNpYS5SRFMiKQpiYXNlX2FwYXJpZW5jaWEgPC0gYmFzZV9hcGFyaWVuY2lhX3JhdyAlPiUgCiAgZmlsdGVyKCFzdHJfZGV0ZWN0KHRleHQsICJeUlQiKSkgCmBgYAoKLSBEaW1lbnNpw7NuCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZGltKGJhc2VfYXBhcmllbmNpYSkKYGBgCgotIERlbnRybyBkZWwgbW90aXZvIGRlIGRpc2NyaW1pbmFjaW9zIGFwYXJpZW5jaWEgc2UgY3VlbnRhbiBjb24gMTAgYWRqZXRpdm9zLgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmFkaiA8LSBiYXNlX2FwYXJpZW5jaWEgJT4lIAogIC4kdGlwbyAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIGxlbmd0aCgpCgpiYXNlX2FwYXJpZW5jaWEgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0YWxseSgpICU+JSAKICBhcnJhbmdlKGRlc2MobikpCmBgYAoKIyMjIyBURl9JREYKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX3JlcG9ydGVzIDwtIGJhc2VfYXBhcmllbmNpYSAlPiUgCiAgc2VsZWN0KHRleHQsIHRpcG8pCmBgYAoKLSBURl9JREYgY29uIGRvcyBwYWxhYnJhcwoKYGBge3IsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZT1GQUxTRX0Kc3RvcF93b3JkcyA8LSBkYXRhLmZyYW1lKHdvcmQgPSBjKHRtOjpzdG9wd29yZHMoa2luZCA9ICJlcyIpLCAieGQiLCAiaHR0cHMiLCAidC5jbyIsICJqYSIsICJqYWphamFqYWphamFqYSIpKSAlPiUgCiAgbXV0YXRlKHdvcmQgPSBzdHJpX3RyYW5zX2dlbmVyYWwod29yZCwgaWQgPSAiTGF0aW4tQVNDSUkiKSkKCmJhc2VfbmFyX21vdGl2b18yIDwtIGJhc2VfcmVwb3J0ZXMgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICBzdW1tYXJpc2UodGV4dG8gPSBwYXN0ZTAodGV4dCwgY29sbGFwc2UgPSAiIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHVubmVzdF90b2tlbnMoYmlncmFtLCB0ZXh0bywgdG9rZW4gPSAibmdyYW1zIiwgbiA9IDIpICU+JSAKICBtdXRhdGUoYmlncmFtID0gc3RyaV90cmFuc19nZW5lcmFsKGJpZ3JhbSwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lIAogIGNvdW50KGJpZ3JhbSwgdGlwbywgc29ydCA9IFRSVUUpICU+JSAKICBuYS5vbWl0KCkgJT4lIAogIHNlcGFyYXRlKGJpZ3JhbSwgYygid29yZDEiLCAid29yZDIiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKCF3b3JkMSAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQyICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgdW5pdGUoYmlncmFtLCB3b3JkMSwgd29yZDIsIHNlcCA9ICIgIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmlncmFtIDwtIGJhc2VfbmFyX21vdGl2b18yICU+JSAKICBmaWx0ZXIodGlwbyAlaW4lIGMoIm5hY28iLCAicGluY2hlX2dvcmRvIiwgImpvZGlkbyIsICJwaW5jaGVfcG9icmUiLCAiY2hhY2hhIikpICU+JSAKICBiaW5kX3RmX2lkZihiaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBmYWN0b3IoYmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKGJpZ3JhbSkpKSkgCgpiaWdyYW0gJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3Bfbig0KSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKGJpZ3JhbSwgdGZfaWRmLCBmaWxsID0gdGlwbykpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJ0Zi1pZGYiKSArCiAgZmFjZXRfd3JhcCh+dGlwbywgbmNvbCA9IDIsIHNjYWxlcyA9ICJmcmVlIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpiYXNlX25hcl9tb3Rpdm9fMiAlPiUgCiAgYmluZF90Zl9pZGYoYmlncmFtLCB0aXBvLCBuKSAlPiUgCiAgYXJyYW5nZShkZXNjKHRmX2lkZikpICU+JSAKICBtdXRhdGUoYmlncmFtID0gZmFjdG9yKGJpZ3JhbSwgbGV2ZWxzID0gcmV2KHVuaXF1ZShiaWdyYW0pKSkpICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oNykgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgYWNhc3QoYmlncmFtIH4gdGlwbywKICAgICAgICB2YWx1ZS52YXIgPSAndGZfaWRmJywKICAgICAgICBmaWxsID0gMCkgJT4lIAogIGNvbXBhcmlzb24uY2xvdWQobWF4LndvcmRzID0gMTAwLCBzY2FsZSA9IGMoMSwgMC4yKSwgdGl0bGUuc2l6ZSA9IDEpCmBgYAoKLSBURl9JREYgY29uIHRyZXMgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfbmFyX21vdGl2b18zIDwtIGJhc2VfcmVwb3J0ZXMgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICBzdW1tYXJpc2UodGV4dG8gPSBwYXN0ZTAodGV4dCwgY29sbGFwc2UgPSAiIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHVubmVzdF90b2tlbnModHJpZ3JhbSwgdGV4dG8sIHRva2VuID0gIm5ncmFtcyIsIG4gPSAzKSAlPiUgCiAgbXV0YXRlKHRyaWdyYW0gPSBzdHJpX3RyYW5zX2dlbmVyYWwodHJpZ3JhbSwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lIAogIGNvdW50KHRyaWdyYW0sIHRpcG8sIHNvcnQgPSBUUlVFKSAlPiUgCiAgbmEub21pdCgpICU+JSAKICBzZXBhcmF0ZSh0cmlncmFtLCBjKCJ3b3JkMSIsICJ3b3JkMiIsICJ3b3JkMyIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoIXdvcmQxICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDIgJWluJSBzdG9wX3dvcmRzJHdvcmQsCiAgICAgICAgICF3b3JkMyAlaW4lIHN0b3Bfd29yZHMkd29yZCkgJT4lIAogIHVuaXRlKHRyaWdyYW0sIHdvcmQxLCB3b3JkMiwgd29yZDMsIHNlcCA9ICIgIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KdHJpZ3JhbSA8LSBiYXNlX25hcl9tb3Rpdm9fMyAlPiUgCiAgZmlsdGVyKHRpcG8gJWluJSBjKCJuYWNvIiwgInBpbmNoZV9nb3JkbyIsICJwaW5jaGVfcG9icmUiKSkgJT4lIAogIGJpbmRfdGZfaWRmKHRyaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZSh0cmlncmFtID0gZmFjdG9yKHRyaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUodHJpZ3JhbSkpKSkgCgp0cmlncmFtICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oMykgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZmlsdGVyKHRpcG8gIT0gImZlbWluYXppIikgJT4lIAogIGdncGxvdChhZXModHJpZ3JhbSwgdGZfaWRmLCBmaWxsID0gdGlwbykpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJ0Zi1pZGYiKSArCiAgZmFjZXRfd3JhcCh+dGlwbywgbmNvbCA9IDIsIHNjYWxlcyA9ICJmcmVlIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCiMjIyMgQ29ycmVsYWNpw7NuIGRlIHBhbGFicmFzCgojIyMjIyBDb21wbGV0YXMKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX3JlcG9ydGVzICU+JSAKICBzZWxlY3QobW90aXZvID0gdGlwbywgdGV4dG8gPSB0ZXh0KSAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIG11dGF0ZShsaW5lYSA9IHJvd19udW1iZXIoKSwKICAgICAgICAgdGV4dG8gPSBhcy5jaGFyYWN0ZXIodGV4dG8pKSAlPiUgCiAgc2VsZWN0KC1tb3Rpdm8pICU+JSAKICB1bm5lc3RfdG9rZW5zKHdvcmQsIHRleHRvKSAlPiUgCiAgbXV0YXRlKHdvcmQgPSBzdHJpX3RyYW5zX2dlbmVyYWwod29yZCwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lCiAgZmlsdGVyKCF3b3JkICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgZ3JvdXBfYnkod29yZCkgJT4lIAogIGZpbHRlcihuKCkgPj0gMTApICU+JQogIHBhaXJ3aXNlX2Nvcih3b3JkLCBsaW5lYSwgc29ydCA9IFRSVUUpICU+JSAKICBmaWx0ZXIoY29ycmVsYXRpb24gPiAuMykgJT4lIAogIGdyYXBoX2Zyb21fZGF0YV9mcmFtZSgpICU+JSAKICBnZ3JhcGgoKSArCiAgZ2VvbV9lZGdlX2xpbmsoYWVzKGVkZ2VfYWxwaGEgPSBjb3JyZWxhdGlvbiksIHNob3cubGVnZW5kID0gRkFMU0UpICsKICBnZW9tX25vZGVfcG9pbnQoY29sb3IgPSAiZ3JleSIsIHNpemUgPSAzKSArCiAgZ2VvbV9ub2RlX3RleHQoYWVzKGxhYmVsID0gbmFtZSksIHJlcGVsID0gVFJVRSkgKwogIHRoZW1lX3ZvaWQoKSAKYGBgCgojIyMgUmVsaWdpw7NuCgojIyMjIE1pbmkgRURBIAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfcmVsaWdpb25fcmF3IDwtIHJlYWRfcmRzKCIuLi9kYXRhL3R3ZWV0cy9iYXNlX3JlbGlnaW9uLlJEUyIpCmJhc2VfcmVsaWdpb24gPC0gYmFzZV9yZWxpZ2lvbl9yYXcgJT4lIAogIGZpbHRlcighc3RyX2RldGVjdCh0ZXh0LCAiXlJUIikpIApgYGAKCi0gRGltZW5zacOzbgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmRpbShiYXNlX3JlbGlnaW9uKQpgYGAKCi0gRGVudHJvIGRlbCBtb3Rpdm8gZGUgZGlzY3JpbWluYWNpb3MgcmVsaWdpb24gc2UgY3VlbnRhbiBjb24gNCBhZGpldGl2b3MuCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYWRqIDwtIGJhc2VfcmVsaWdpb24gJT4lIAogIC4kdGlwbyAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIGxlbmd0aCgpCgpiYXNlX3JlbGlnaW9uICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdGFsbHkoKSAlPiUgCiAgYXJyYW5nZShkZXNjKG4pKQpgYGAKCiMjIyMgVEZfSURGCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9yZXBvcnRlcyA8LSBiYXNlX3JlbGlnaW9uICU+JSAKICBzZWxlY3QodGV4dCwgdGlwbykKYGBgCgotIFRGX0lERiBjb24gZG9zIHBhbGFicmFzCgpgYGB7ciwgZWNobyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpzdG9wX3dvcmRzIDwtIGRhdGEuZnJhbWUod29yZCA9IGModG06OnN0b3B3b3JkcyhraW5kID0gImVzIiksICJ4ZCIsICJodHRwcyIsICJ0LmNvIiwgImphIiwgImphamFqYWphamFqYWphIiwgImNsdnRwIiwgImx3ZHEzaWduYWxzYWJpYXMiKSkgJT4lIAogIG11dGF0ZSh3b3JkID0gc3RyaV90cmFuc19nZW5lcmFsKHdvcmQsIGlkID0gIkxhdGluLUFTQ0lJIikpCgpiYXNlX25hcl9tb3Rpdm9fMiA8LSBiYXNlX3JlcG9ydGVzICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgc3VtbWFyaXNlKHRleHRvID0gcGFzdGUwKHRleHQsIGNvbGxhcHNlID0gIiIpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICB1bm5lc3RfdG9rZW5zKGJpZ3JhbSwgdGV4dG8sIHRva2VuID0gIm5ncmFtcyIsIG4gPSAyKSAlPiUgCiAgbXV0YXRlKGJpZ3JhbSA9IHN0cmlfdHJhbnNfZ2VuZXJhbChiaWdyYW0sIGlkID0gIkxhdGluLUFTQ0lJIikpICU+JSAKICBjb3VudChiaWdyYW0sIHRpcG8sIHNvcnQgPSBUUlVFKSAlPiUgCiAgbmEub21pdCgpICU+JSAKICBzZXBhcmF0ZShiaWdyYW0sIGMoIndvcmQxIiwgIndvcmQyIiksIHNlcCA9ICIgIikgJT4lIAogIGZpbHRlcighd29yZDEgJWluJSBzdG9wX3dvcmRzJHdvcmQsCiAgICAgICAgICF3b3JkMiAlaW4lIHN0b3Bfd29yZHMkd29yZCkgJT4lIAogIHVuaXRlKGJpZ3JhbSwgd29yZDEsIHdvcmQyLCBzZXAgPSAiICIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJpZ3JhbSA8LSBiYXNlX25hcl9tb3Rpdm9fMiAlPiUgCiAgYmluZF90Zl9pZGYoYmlncmFtLCB0aXBvLCBuKSAlPiUgCiAgYXJyYW5nZShkZXNjKHRmX2lkZikpICU+JSAKICBtdXRhdGUoYmlncmFtID0gZmFjdG9yKGJpZ3JhbSwgbGV2ZWxzID0gcmV2KHVuaXF1ZShiaWdyYW0pKSkpIAoKYmlncmFtICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oNCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyhiaWdyYW0sIHRmX2lkZiwgZmlsbCA9IHRpcG8pKSArCiAgZ2VvbV9jb2woc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSAidGYtaWRmIikgKwogIGZhY2V0X3dyYXAofnRpcG8sIG5jb2wgPSAyLCBzY2FsZXMgPSAiZnJlZSIpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KYmFzZV9uYXJfbW90aXZvXzIgJT4lIAogIGJpbmRfdGZfaWRmKGJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKGJpZ3JhbSA9IGZhY3RvcihiaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUoYmlncmFtKSkpKSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDcpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGFjYXN0KGJpZ3JhbSB+IHRpcG8sCiAgICAgICAgdmFsdWUudmFyID0gJ3RmX2lkZicsCiAgICAgICAgZmlsbCA9IDApICU+JSAKICBjb21wYXJpc29uLmNsb3VkKG1heC53b3JkcyA9IDEwMCwgc2NhbGUgPSBjKDEsIDAuNSksIHRpdGxlLnNpemUgPSAxKQpgYGAKCi0gVEZfSURGIGNvbiB0cmVzIHBhbGFicmFzCgpgYGB7ciwgZWNobyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX25hcl9tb3Rpdm9fMyA8LSBiYXNlX3JlcG9ydGVzICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgc3VtbWFyaXNlKHRleHRvID0gcGFzdGUwKHRleHQsIGNvbGxhcHNlID0gIiIpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICB1bm5lc3RfdG9rZW5zKHRyaWdyYW0sIHRleHRvLCB0b2tlbiA9ICJuZ3JhbXMiLCBuID0gMykgJT4lIAogIG11dGF0ZSh0cmlncmFtID0gc3RyaV90cmFuc19nZW5lcmFsKHRyaWdyYW0sIGlkID0gIkxhdGluLUFTQ0lJIikpICU+JSAKICBjb3VudCh0cmlncmFtLCB0aXBvLCBzb3J0ID0gVFJVRSkgJT4lIAogIG5hLm9taXQoKSAlPiUgCiAgc2VwYXJhdGUodHJpZ3JhbSwgYygid29yZDEiLCAid29yZDIiLCAid29yZDMiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKCF3b3JkMSAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQyICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDMgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICB1bml0ZSh0cmlncmFtLCB3b3JkMSwgd29yZDIsIHdvcmQzLCBzZXAgPSAiICIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnRyaWdyYW0gPC0gYmFzZV9uYXJfbW90aXZvXzMgJT4lIAogIGJpbmRfdGZfaWRmKHRyaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZSh0cmlncmFtID0gZmFjdG9yKHRyaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUodHJpZ3JhbSkpKSkgCgp0cmlncmFtICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oMykgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZmlsdGVyKHRpcG8gIT0gInRlc3RpZ29zX2plaG92YSIpICU+JSAKICBnZ3Bsb3QoYWVzKHRyaWdyYW0sIHRmX2lkZiwgZmlsbCA9IHRpcG8pKSArCiAgZ2VvbV9jb2woc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGxhYnMoeCA9IE5VTEwsIHkgPSAidGYtaWRmIikgKwogIGZhY2V0X3dyYXAofnRpcG8sIG5jb2wgPSAyLCBzY2FsZXMgPSAiZnJlZSIpICsKICBjb29yZF9mbGlwKCkKYGBgCgojIyMjIENvcnJlbGFjacOzbiBkZSBwYWxhYnJhcwoKIyMjIyMgQ29tcGxldGFzCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9yZXBvcnRlcyAlPiUgCiAgc2VsZWN0KG1vdGl2byA9IHRpcG8sIHRleHRvID0gdGV4dCkgJT4lIAogIHVuaXF1ZSgpICU+JSAKICBtdXRhdGUobGluZWEgPSByb3dfbnVtYmVyKCksCiAgICAgICAgIHRleHRvID0gYXMuY2hhcmFjdGVyKHRleHRvKSkgJT4lIAogIHNlbGVjdCgtbW90aXZvKSAlPiUgCiAgdW5uZXN0X3Rva2Vucyh3b3JkLCB0ZXh0bykgJT4lIAogIG11dGF0ZSh3b3JkID0gc3RyaV90cmFuc19nZW5lcmFsKHdvcmQsIGlkID0gIkxhdGluLUFTQ0lJIikpICU+JQogIGZpbHRlcighd29yZCAlaW4lIHN0b3Bfd29yZHMkd29yZCkgJT4lIAogIGdyb3VwX2J5KHdvcmQpICU+JSAKICBmaWx0ZXIobigpID49IDIpICU+JQogIHBhaXJ3aXNlX2Nvcih3b3JkLCBsaW5lYSwgc29ydCA9IFRSVUUpICU+JSAKICBmaWx0ZXIoY29ycmVsYXRpb24gPiAuMikgJT4lIAogIGdyYXBoX2Zyb21fZGF0YV9mcmFtZSgpICU+JSAKICBnZ3JhcGgoKSArCiAgZ2VvbV9lZGdlX2xpbmsoYWVzKGVkZ2VfYWxwaGEgPSBjb3JyZWxhdGlvbiksIHNob3cubGVnZW5kID0gRkFMU0UpICsKICBnZW9tX25vZGVfcG9pbnQoY29sb3IgPSAiZ3JleSIsIHNpemUgPSAzKSArCiAgZ2VvbV9ub2RlX3RleHQoYWVzKGxhYmVsID0gbmFtZSksIHJlcGVsID0gVFJVRSkgKwogIHRoZW1lX3ZvaWQoKSAKYGBgCgojIyMgRWRhZAoKIyMjIyBNaW5pIEVEQSAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX2VkYWRfcmF3IDwtIHJlYWRfcmRzKCIuLi9kYXRhL3R3ZWV0cy9iYXNlX2VkYWQuUkRTIikKYmFzZV9lZGFkIDwtIGJhc2VfZWRhZF9yYXcgJT4lIAogIGZpbHRlcighc3RyX2RldGVjdCh0ZXh0LCAiXlJUIikpIApgYGAKCi0gRGltZW5zacOzbgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmRpbShiYXNlX2VkYWQpCmBgYAoKLSBEZW50cm8gZGVsIG1vdGl2byBkZSBkaXNjcmltaW5hY2lvcyBlZGFkIHNlIGN1ZW50YW4gY29uIDYgYWRqZXRpdm9zLgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmFkaiA8LSBiYXNlX2VkYWQgJT4lIAogIC4kdGlwbyAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIGxlbmd0aCgpCgpiYXNlX2VkYWQgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0YWxseSgpICU+JSAKICBhcnJhbmdlKGRlc2MobikpCmBgYAoKIyMjIyBURl9JREYKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX3JlcG9ydGVzIDwtIGJhc2VfZWRhZCAlPiUgCiAgc2VsZWN0KHRleHQsIHRpcG8pCmBgYAoKLSBURl9JREYgY29uIGRvcyBwYWxhYnJhcwoKYGBge3IsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZT1GQUxTRX0Kc3RvcF93b3JkcyA8LSBkYXRhLmZyYW1lKHdvcmQgPSBjKHRtOjpzdG9wd29yZHMoa2luZCA9ICJlcyIpLCAieGQiLCAiaHR0cHMiLCAidC5jbyIsICJqYSIsICJqYWphamFqYWphamFqYSIsICJjbHZ0cCIsICJsd2RxM2lnbmFsc2FiaWFzIikpICU+JSAKICBtdXRhdGUod29yZCA9IHN0cmlfdHJhbnNfZ2VuZXJhbCh3b3JkLCBpZCA9ICJMYXRpbi1BU0NJSSIpKQoKYmFzZV9uYXJfbW90aXZvXzIgPC0gYmFzZV9yZXBvcnRlcyAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHN1bW1hcmlzZSh0ZXh0byA9IHBhc3RlMCh0ZXh0LCBjb2xsYXBzZSA9ICIiKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgdW5uZXN0X3Rva2VucyhiaWdyYW0sIHRleHRvLCB0b2tlbiA9ICJuZ3JhbXMiLCBuID0gMikgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBzdHJpX3RyYW5zX2dlbmVyYWwoYmlncmFtLCBpZCA9ICJMYXRpbi1BU0NJSSIpKSAlPiUgCiAgY291bnQoYmlncmFtLCB0aXBvLCBzb3J0ID0gVFJVRSkgJT4lIAogIG5hLm9taXQoKSAlPiUgCiAgc2VwYXJhdGUoYmlncmFtLCBjKCJ3b3JkMSIsICJ3b3JkMiIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoIXdvcmQxICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDIgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICB1bml0ZShiaWdyYW0sIHdvcmQxLCB3b3JkMiwgc2VwID0gIiAiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiaWdyYW0gPC0gYmFzZV9uYXJfbW90aXZvXzIgJT4lIAogIGJpbmRfdGZfaWRmKGJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKGJpZ3JhbSA9IGZhY3RvcihiaWdyYW0sIGxldmVscyA9IHJldih1bmlxdWUoYmlncmFtKSkpKSAKCmJpZ3JhbSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDQpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdncGxvdChhZXMoYmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBmYWNldF93cmFwKH50aXBvLCBuY29sID0gMiwgc2NhbGVzID0gImZyZWUiKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmJhc2VfbmFyX21vdGl2b18yICU+JSAKICBiaW5kX3RmX2lkZihiaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBmYWN0b3IoYmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKGJpZ3JhbSkpKSkgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3Bfbig3KSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBhY2FzdChiaWdyYW0gfiB0aXBvLAogICAgICAgIHZhbHVlLnZhciA9ICd0Zl9pZGYnLAogICAgICAgIGZpbGwgPSAwKSAlPiUgCiAgY29tcGFyaXNvbi5jbG91ZChtYXgud29yZHMgPSAxMDAsIHNjYWxlID0gYygxLCAwLjUpLCB0aXRsZS5zaXplID0gMSkKYGBgCgotIFRGX0lERiBjb24gdHJlcyBwYWxhYnJhcwoKYGBge3IsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9uYXJfbW90aXZvXzMgPC0gYmFzZV9yZXBvcnRlcyAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHN1bW1hcmlzZSh0ZXh0byA9IHBhc3RlMCh0ZXh0LCBjb2xsYXBzZSA9ICIiKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgdW5uZXN0X3Rva2Vucyh0cmlncmFtLCB0ZXh0bywgdG9rZW4gPSAibmdyYW1zIiwgbiA9IDMpICU+JSAKICBtdXRhdGUodHJpZ3JhbSA9IHN0cmlfdHJhbnNfZ2VuZXJhbCh0cmlncmFtLCBpZCA9ICJMYXRpbi1BU0NJSSIpKSAlPiUgCiAgY291bnQodHJpZ3JhbSwgdGlwbywgc29ydCA9IFRSVUUpICU+JSAKICBuYS5vbWl0KCkgJT4lIAogIHNlcGFyYXRlKHRyaWdyYW0sIGMoIndvcmQxIiwgIndvcmQyIiwgIndvcmQzIiksIHNlcCA9ICIgIikgJT4lIAogIGZpbHRlcighd29yZDEgJWluJSBzdG9wX3dvcmRzJHdvcmQsCiAgICAgICAgICF3b3JkMiAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQzICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgdW5pdGUodHJpZ3JhbSwgd29yZDEsIHdvcmQyLCB3b3JkMywgc2VwID0gIiAiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQp0cmlncmFtIDwtIGJhc2VfbmFyX21vdGl2b18zICU+JSAKICBiaW5kX3RmX2lkZih0cmlncmFtLCB0aXBvLCBuKSAlPiUgCiAgYXJyYW5nZShkZXNjKHRmX2lkZikpICU+JSAKICBtdXRhdGUodHJpZ3JhbSA9IGZhY3Rvcih0cmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKHRyaWdyYW0pKSkpIAoKdHJpZ3JhbSAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRvcF9uKDIpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGZpbHRlcih0aXBvICE9ICJ0ZXN0aWdvc19qZWhvdmEiKSAlPiUgCiAgZ2dwbG90KGFlcyh0cmlncmFtLCB0Zl9pZGYsIGZpbGwgPSB0aXBvKSkgKwogIGdlb21fY29sKHNob3cubGVnZW5kID0gRkFMU0UpICsKICBsYWJzKHggPSBOVUxMLCB5ID0gInRmLWlkZiIpICsKICBmYWNldF93cmFwKH50aXBvLCBuY29sID0gMiwgc2NhbGVzID0gImZyZWUiKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKIyMjIyBDb3JyZWxhY2nDs24gZGUgcGFsYWJyYXMKCiMjIyMjIENvbXBsZXRhcwoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfcmVwb3J0ZXMgJT4lIAogIHNlbGVjdChtb3Rpdm8gPSB0aXBvLCB0ZXh0byA9IHRleHQpICU+JSAKICB1bmlxdWUoKSAlPiUgCiAgbXV0YXRlKGxpbmVhID0gcm93X251bWJlcigpLAogICAgICAgICB0ZXh0byA9IGFzLmNoYXJhY3Rlcih0ZXh0bykpICU+JSAKICBzZWxlY3QoLW1vdGl2bykgJT4lIAogIHVubmVzdF90b2tlbnMod29yZCwgdGV4dG8pICU+JSAKICBtdXRhdGUod29yZCA9IHN0cmlfdHJhbnNfZ2VuZXJhbCh3b3JkLCBpZCA9ICJMYXRpbi1BU0NJSSIpKSAlPiUKICBmaWx0ZXIoIXdvcmQgJWluJSBzdG9wX3dvcmRzJHdvcmQpICU+JSAKICBncm91cF9ieSh3b3JkKSAlPiUgCiAgZmlsdGVyKG4oKSA+PSAxMCkgJT4lCiAgcGFpcndpc2VfY29yKHdvcmQsIGxpbmVhLCBzb3J0ID0gVFJVRSkgJT4lIAogIGZpbHRlcihjb3JyZWxhdGlvbiA+IC4yKSAlPiUgCiAgZ3JhcGhfZnJvbV9kYXRhX2ZyYW1lKCkgJT4lIAogIGdncmFwaCgpICsKICBnZW9tX2VkZ2VfbGluayhhZXMoZWRnZV9hbHBoYSA9IGNvcnJlbGF0aW9uKSwgc2hvdy5sZWdlbmQgPSBGQUxTRSkgKwogIGdlb21fbm9kZV9wb2ludChjb2xvciA9ICJncmV5Iiwgc2l6ZSA9IDMpICsKICBnZW9tX25vZGVfdGV4dChhZXMobGFiZWwgPSBuYW1lKSwgcmVwZWwgPSBUUlVFKSArCiAgdGhlbWVfdm9pZCgpIApgYGAKCiMjIyBEaXNjYXBhY2lkYWQKCiMjIyMgTWluaSBFREEgCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmFzZV9kaXNjYXBhY2lkYWRfcmF3IDwtIHJlYWRfcmRzKCIuLi9kYXRhL3R3ZWV0cy9iYXNlX2Rpc2NhcGFjaWRhZC5SRFMiKQpiYXNlX2Rpc2NhcGFjaWRhZCA8LSBiYXNlX2Rpc2NhcGFjaWRhZF9yYXcgJT4lIAogIGZpbHRlcighc3RyX2RldGVjdCh0ZXh0LCAiXlJUIikpIApgYGAKCi0gRGltZW5zacOzbgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmRpbShiYXNlX2Rpc2NhcGFjaWRhZCkKYGBgCgotIERlbnRybyBkZWwgbW90aXZvIGRlIGRpc2NyaW1pbmFjaW9zIGRpc2NhcGFjaWRhZCBzZSBjdWVudGFuIGNvbiAzIGFkamV0aXZvcy4KCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQphZGogPC0gYmFzZV9kaXNjYXBhY2lkYWQgJT4lIAogIC4kdGlwbyAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIGxlbmd0aCgpCgpiYXNlX2Rpc2NhcGFjaWRhZCAlPiUgCiAgZ3JvdXBfYnkodGlwbykgJT4lIAogIHRhbGx5KCkgJT4lIAogIGFycmFuZ2UoZGVzYyhuKSkKYGBgCgojIyMjIFRGX0lERgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfcmVwb3J0ZXMgPC0gYmFzZV9kaXNjYXBhY2lkYWQgJT4lIAogIHNlbGVjdCh0ZXh0LCB0aXBvKQpgYGAKCi0gVEZfSURGIGNvbiBkb3MgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnN0b3Bfd29yZHMgPC0gZGF0YS5mcmFtZSh3b3JkID0gYyh0bTo6c3RvcHdvcmRzKGtpbmQgPSAiZXMiKSwgInhkIiwgImh0dHBzIiwgInQuY28iLCAiamEiLCAiamFqYWphamFqYWphamEiLCAiY2x2dHAiLCAibHdkcTNpZ25hbHNhYmlhcyIpKSAlPiUgCiAgbXV0YXRlKHdvcmQgPSBzdHJpX3RyYW5zX2dlbmVyYWwod29yZCwgaWQgPSAiTGF0aW4tQVNDSUkiKSkKCmJhc2VfbmFyX21vdGl2b18yIDwtIGJhc2VfcmVwb3J0ZXMgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICBzdW1tYXJpc2UodGV4dG8gPSBwYXN0ZTAodGV4dCwgY29sbGFwc2UgPSAiIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHVubmVzdF90b2tlbnMoYmlncmFtLCB0ZXh0bywgdG9rZW4gPSAibmdyYW1zIiwgbiA9IDIpICU+JSAKICBtdXRhdGUoYmlncmFtID0gc3RyaV90cmFuc19nZW5lcmFsKGJpZ3JhbSwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lIAogIGNvdW50KGJpZ3JhbSwgdGlwbywgc29ydCA9IFRSVUUpICU+JSAKICBuYS5vbWl0KCkgJT4lIAogIHNlcGFyYXRlKGJpZ3JhbSwgYygid29yZDEiLCAid29yZDIiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKCF3b3JkMSAlaW4lIHN0b3Bfd29yZHMkd29yZCwKICAgICAgICAgIXdvcmQyICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgdW5pdGUoYmlncmFtLCB3b3JkMSwgd29yZDIsIHNlcCA9ICIgIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KYmlncmFtIDwtIGJhc2VfbmFyX21vdGl2b18yICU+JSAKICBiaW5kX3RmX2lkZihiaWdyYW0sIHRpcG8sIG4pICU+JSAKICBhcnJhbmdlKGRlc2ModGZfaWRmKSkgJT4lIAogIG11dGF0ZShiaWdyYW0gPSBmYWN0b3IoYmlncmFtLCBsZXZlbHMgPSByZXYodW5pcXVlKGJpZ3JhbSkpKSkgCgpiaWdyYW0gJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3Bfbig0KSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKGJpZ3JhbSwgdGZfaWRmLCBmaWxsID0gdGlwbykpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJ0Zi1pZGYiKSArCiAgZmFjZXRfd3JhcCh+dGlwbywgbmNvbCA9IDIsIHNjYWxlcyA9ICJmcmVlIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpiYXNlX25hcl9tb3Rpdm9fMiAlPiUgCiAgYmluZF90Zl9pZGYoYmlncmFtLCB0aXBvLCBuKSAlPiUgCiAgYXJyYW5nZShkZXNjKHRmX2lkZikpICU+JSAKICBtdXRhdGUoYmlncmFtID0gZmFjdG9yKGJpZ3JhbSwgbGV2ZWxzID0gcmV2KHVuaXF1ZShiaWdyYW0pKSkpICU+JSAKICBncm91cF9ieSh0aXBvKSAlPiUgCiAgdG9wX24oNykgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgYWNhc3QoYmlncmFtIH4gdGlwbywKICAgICAgICB2YWx1ZS52YXIgPSAndGZfaWRmJywKICAgICAgICBmaWxsID0gMCkgJT4lIAogIGNvbXBhcmlzb24uY2xvdWQobWF4LndvcmRzID0gMTAwLCBzY2FsZSA9IGMoMSwgMC41KSwgdGl0bGUuc2l6ZSA9IDEpCmBgYAoKLSBURl9JREYgY29uIHRyZXMgcGFsYWJyYXMKCmBgYHtyLCBlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmJhc2VfbmFyX21vdGl2b18zIDwtIGJhc2VfcmVwb3J0ZXMgJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICBzdW1tYXJpc2UodGV4dG8gPSBwYXN0ZTAodGV4dCwgY29sbGFwc2UgPSAiIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHVubmVzdF90b2tlbnModHJpZ3JhbSwgdGV4dG8sIHRva2VuID0gIm5ncmFtcyIsIG4gPSAzKSAlPiUgCiAgbXV0YXRlKHRyaWdyYW0gPSBzdHJpX3RyYW5zX2dlbmVyYWwodHJpZ3JhbSwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lIAogIGNvdW50KHRyaWdyYW0sIHRpcG8sIHNvcnQgPSBUUlVFKSAlPiUgCiAgbmEub21pdCgpICU+JSAKICBzZXBhcmF0ZSh0cmlncmFtLCBjKCJ3b3JkMSIsICJ3b3JkMiIsICJ3b3JkMyIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoIXdvcmQxICVpbiUgc3RvcF93b3JkcyR3b3JkLAogICAgICAgICAhd29yZDIgJWluJSBzdG9wX3dvcmRzJHdvcmQsCiAgICAgICAgICF3b3JkMyAlaW4lIHN0b3Bfd29yZHMkd29yZCkgJT4lIAogIHVuaXRlKHRyaWdyYW0sIHdvcmQxLCB3b3JkMiwgd29yZDMsIHNlcCA9ICIgIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KdHJpZ3JhbSA8LSBiYXNlX25hcl9tb3Rpdm9fMyAlPiUgCiAgYmluZF90Zl9pZGYodHJpZ3JhbSwgdGlwbywgbikgJT4lIAogIGFycmFuZ2UoZGVzYyh0Zl9pZGYpKSAlPiUgCiAgbXV0YXRlKHRyaWdyYW0gPSBmYWN0b3IodHJpZ3JhbSwgbGV2ZWxzID0gcmV2KHVuaXF1ZSh0cmlncmFtKSkpKSAKCnRyaWdyYW0gJT4lIAogIGdyb3VwX2J5KHRpcG8pICU+JSAKICB0b3BfbigyKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBmaWx0ZXIodGlwbyAhPSAidGVzdGlnb3NfamVob3ZhIikgJT4lIAogIGdncGxvdChhZXModHJpZ3JhbSwgdGZfaWRmLCBmaWxsID0gdGlwbykpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgbGFicyh4ID0gTlVMTCwgeSA9ICJ0Zi1pZGYiKSArCiAgZmFjZXRfd3JhcCh+dGlwbywgbmNvbCA9IDIsIHNjYWxlcyA9ICJmcmVlIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCiMjIyMgQ29ycmVsYWNpw7NuIGRlIHBhbGFicmFzCgojIyMjIyBDb21wbGV0YXMKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpiYXNlX3JlcG9ydGVzICU+JSAKICBzZWxlY3QobW90aXZvID0gdGlwbywgdGV4dG8gPSB0ZXh0KSAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIG11dGF0ZShsaW5lYSA9IHJvd19udW1iZXIoKSwKICAgICAgICAgdGV4dG8gPSBhcy5jaGFyYWN0ZXIodGV4dG8pKSAlPiUgCiAgc2VsZWN0KC1tb3Rpdm8pICU+JSAKICB1bm5lc3RfdG9rZW5zKHdvcmQsIHRleHRvKSAlPiUgCiAgbXV0YXRlKHdvcmQgPSBzdHJpX3RyYW5zX2dlbmVyYWwod29yZCwgaWQgPSAiTGF0aW4tQVNDSUkiKSkgJT4lCiAgZmlsdGVyKCF3b3JkICVpbiUgc3RvcF93b3JkcyR3b3JkKSAlPiUgCiAgZ3JvdXBfYnkod29yZCkgJT4lIAogIGZpbHRlcihuKCkgPj0gMTApICU+JQogIHBhaXJ3aXNlX2Nvcih3b3JkLCBsaW5lYSwgc29ydCA9IFRSVUUpICU+JSAKICBmaWx0ZXIoY29ycmVsYXRpb24gPiAuMikgJT4lIAogIGdyYXBoX2Zyb21fZGF0YV9mcmFtZSgpICU+JSAKICBnZ3JhcGgoKSArCiAgZ2VvbV9lZGdlX2xpbmsoYWVzKGVkZ2VfYWxwaGEgPSBjb3JyZWxhdGlvbiksIHNob3cubGVnZW5kID0gRkFMU0UpICsKICBnZW9tX25vZGVfcG9pbnQoY29sb3IgPSAiZ3JleSIsIHNpemUgPSAzKSArCiAgZ2VvbV9ub2RlX3RleHQoYWVzKGxhYmVsID0gbmFtZSksIHJlcGVsID0gVFJVRSkgKwogIHRoZW1lX3ZvaWQoKSAKYGBgCiMjIyBTYWx1ZA==